home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / PowerFantasm™ 4.19a / PowerFantasm™ / F4_EXAMPLES / Hello_world - 68k / Hello_world.s < prev   
Text File  |  1997-04-01  |  3KB  |  104 lines

  1.     includeh    mac_traps_68k.def    *header file for trap names
  2.     includeh    ls_68k_macros.def    *header file of Fantasm standard macros
  3. ******************************************
  4. *A very quick example for Fantasm V4     *
  5. *Opens a window and prints hello in the  *
  6. *three primary colours.             *
  7. *ISA:    68k                 *
  8. *©Lightsoft 1996             *
  9. ******************************************
  10. Hello_world:
  11. **First, initialise the Macintosh
  12.     LEA    quickdraw_globals(PC),A0    *QUICK DRAW WORK SPACE
  13.     LEA    202(A0),A0    *ADD 202 TO A0 QUICKLY
  14.     MOVE.L    A0,-(SP)
  15.     DC.W    _INITGRAF    *INIT GRAPHICS
  16.     DC.W    _INITFONTS    *INIT FONTS
  17.     MOVEQ    #-1,D0
  18.     DC.W    _FLUSHEVENTS    *FLUSHEVENTS NEEDS PARAMETER IN DO
  19.     DC.W    _INITWINDOWS    *INIT WINDOWS
  20.     DC.W    _INITMENUS    *INIT MENUS
  21.     CLR.L    -(SP)
  22.     DC.W    _INITDIALOGS    *INIT DIALOGS
  23.     DC.W    _TEINIT        *INIT TEXT EDITOR (YES THERES ONE BUILT IN)
  24.     DC.W    _INITCURSOR
  25. **Now, create a window
  26. **How it appears in C
  27. **WindowPtr newcwindow(void *wStorage,const Rect *boundsRect,char *title,
  28. **    Boolean visible,short procID,WindowPtr behind,Boolean goAwayFlag,long refCon); 
  29.     clr.l    -(sp)        *space for the returned WindowPtr
  30.     clr.l    -(sp)        *wStorage - not used so cleared
  31.     pea    our_window_rect(pc)    *the windows' dimensions as a rectangle
  32.     pea    our_window_title(pc)    *the windows title    
  33.     move.b    #1,-(sp)    *1=is visible
  34.     move.w    #4,-(sp)    *procID, 4 is normal window
  35.     move.l    #-1,-(sp)    *This window is behind...-1=no window
  36.     move.b    #0,-(sp)    *no go away
  37.     move.l    #0,-(sp)    *no refCon
  38.     dc.w    _newwindow    *create a new window
  39.     move.l    (sp)+,d7    *save window handle
  40.     move.l    d7,-(sp)
  41.     dc.w    _setport    *tell Mac this is current drawing port
  42.     
  43.     move.w    #4,-(sp)
  44.     dc.w    _textfont    *set font to monaco
  45.     move.w    #9,-(sp)    
  46.     dc.w    _textsize    *set 9 point size
  47.  
  48. **Print first hello in red
  49.     pea    red(pc)
  50.     dc.w    _rgbforecolor    *set colour to red
  51.     move.w    #13,-(sp)    *x position of cursor
  52.     move.w    #30,-(sp)    *y position of cursor
  53.     dc.w    _moveto
  54.     pea    hello(pc)
  55.     dc.w    _drawstring
  56.     
  57. **Print second hello in green
  58.     pea    green(pc)
  59.     dc.w    _rgbforecolor    *set colour to green
  60.     move.w    #13,-(sp)    *x position of cursor
  61.     move.w    #45,-(sp)    *y position of cursor
  62.     dc.w    _moveto
  63.     pea    hello(pc)
  64.     dc.w    _drawstring
  65.  
  66. **And finally, the third hello in blue
  67.     pea    blue(pc)
  68.     dc.w    _rgbforecolor    *set colour to blue
  69.     move.w    #13,-(sp)    *x position of cursor
  70.     move.w    #60,-(sp)    *y position of cursor
  71.     dc.w    _moveto
  72.     pea    hello(pc)
  73.     dc.w    _drawstring
  74.  
  75.     moveq    #5,d5
  76.     bsr    wait_d0secs        *wait 5 seconds
  77.     rts_    "Hello_world"        *terminate prog with rts_ macro (generates macsbug label)
  78.  
  79. **Subroutines follow
  80. **Wait_d0secs delays by d5 seconds
  81. wait_d0secs:
  82.     muls    #60,d5        *Seconds times ticks in a second (60)
  83.     clr.l    -(sp)
  84.     dc.w    _tickcount    *get current time as a tickcount in d7
  85.     move.l    (sp)+,d7
  86.     add.l    d5,d7    *add on seconds to get end time
  87. wait_loop:
  88.     clr.l    -(sp)
  89.     dc.w    _tickcount
  90.     cmp.l    (sp)+,d7    *get current tickcount and compare with end time
  91.     bgt.s    wait_loop    *if end time is greater than current, wait.
  92.     rts_    "Wait_d0secs"    *macsbug label for this routine
  93.     
  94. **Data follows
  95. quickdraw_globals:    ds.b    210    *210 bytes for quickdraw
  96. our_window_rect:    dc.w    100,100,200,200    *top,left,bottom,right
  97. ;    align off
  98. ;our_window_title:    pstring    "Fantasm4"     *Window title as a Pascal string
  99. our_window_title:    dc.b    8,"Fantasm4"
  100. red:    dc.w    0xffff,0,0    *colours as 16 bits rgb
  101. green:    dc.w    0,0xffff,0
  102. blue:    dc.w    0,0,0xffff
  103. hello:    pstring    "Hello world"    *text as a pascal string (pstring is a directive)
  104.     align